Digital image data, such as photographs taken by a digital camera, originate as minimally processed data from the image sensor of a digital camera or image scanner. When a digital camera makes an exposure, the imaging chip records the amount of light that has hit each pixel, or photo site. This is recorded as a voltage level. The camera's analog to digital circuitry now changes this analog voltage signal into a digital representation. Depending on the camera's circuitry, either 12 or 14 bits of data are recorded, in current technology.
A “RAW” image file contains this minimally processed data from the image sensor of a digital camera or image scanner. RAW files are so named because they are not yet processed and capable of being displayed in a visually intelligible manner, ready to use with a bitmap graphics editor, printed, or by a typical web browser. Under current approaches, the RAW image data must be processed and converted to an RGB format such as TIFF or JPEG before it can be manipulated.
There is no single RAW format: different manufacturers use their own proprietary formats, which are collectively known as RAW format. The term RAW may refer to the data comprising the image files or the format of those files. The RAW image data and its shooting parameters are kept apart until they meet at a RAW conversion stage. This means that changes can be made to the exposure (brightness and contrast), white balance, saturation, sharpness and many other parameters using the RAW image data from the camera or scanner.
The RAW conversion is an interpretation of the digital sensor data performed by a technique, such as a particular algorithm. Currently, cameras that support RAW files typically come with proprietary software for interpretation and conversion of their RAW files to TIFF or JPEG. Other conversion programs and plug-ins are available that have either licensed the technology from the camera manufacturer or reverse-engineered the particular RAW format.
A current approach to generating a display of the sensor data; i.e., interpreting the sensor data into a visually intelligible item such as a digital image, is to interpret the sensor data using a particular technique and modify the image from the sensor data by converting the interpreted RAW data into another format such as JPEG, TIFF, or PSD. Then a user may make image adjustments, such as eliminating red-eye, removing dust, cropping, or organizing images.
A drawback to the current approach is that techniques for interpreting sensor data are often changed; for example, they may be ostensibly improved or refined. As a result, images produced by using the new techniques may look different than images produced by a previous iteration of the technique. Many users apply custom adjustments to their images after processing the sensor data, such as custom filters that alter color levels, white balance, etc. Therefore, a user desiring to interpret the sensor data using a new version of the technique may find that the custom adjustments no longer result in an acceptable image.
Current approaches use an “all-or-nothing” approach, where a new version of the technique is installed, for example as a plug-in, and all future sensor data is interpreted using the newly-installed technique. A drawback to this approach is that a user may find that the new technique produces unacceptable results, such as rendering custom filters unusable, as discussed above. Under current approaches, then a user must de-install the plug-in or other approach for applying the new technique and re-install the previous technique, with no guarantee that the previous technique may even be located and re-installed.
In current approaches, it is the responsibility of the user to manage these various plug-ins and techniques, and to try to discern what, if any, changes have occurred in the RAW processing. Because current approaches do not allow users to run more than one version of the decode plug-in, or otherwise utilize more than one version of the decoding techniques at the same time, it is impractical to compare different decoding versions.
FIG. 1 is a block diagram illustrating a current approach to interpreting RAW image files. In FIG. 1, a collection of RAW data, for example four RAW image files 104a-104d representing four digital photographs, reside in storage 102. Storage 102 may be a flash memory card, a hard drive, a DVD, or any other type of non-volatile storage medium. The RAW image files 104a-104d are comprised of sensor data, which is not viewable as a digital image and may be in a manufacturer-specific format.
In order to view the RAW image files 104a-104d as visible digital images, the RAW image files 104a-104d must be interpreted by a RAW processing technique, such as an algorithm. In FIG. 1, there are two RAW interpretation techniques 106, 114 that may be used to interpret the RAW image files 104a-104d. These techniques may be embodied, for example, in a “plug-in” module or other type of installable executable instructions. However, under current approaches, only one of the interpretation techniques 106, 114 is available for use at one time. FIG. 1 illustrates an alternative flow of data. The RAW image files 104a-104d may either be processed by the first technique 106 or the second technique 114, but in order to use the second technique 114, the first technique 106 must be made unavailable; for example by uninstalling a plug-in that comprises the first technique 106 and installing a plug-in that comprises the second technique 114.
In FIG. 1, the RAW image files 104a-104d are transmitted to the first technique 106, for example by plugging storage 102 such as a memory card containing the RAW image files 104a-104d into a computer and causing the RAW image files 104a-104d to be read by a program embodying the first technique 106. The first technique 106 takes the sensor data comprising the RAW image files 104a-104d and interprets the data into fully defined pixels. Fully defined pixels are pixels for which a color value has been defined.
After the RAW image files 104a-104d have been interpreted by the first technique 106, they are transmitted to storage 108, for example a hard drive, and stored as image files 110a-110d, such as a TIFF file or a JPEG file, in which the color values for every pixel have been defined. Once the pixels for the image files 110a-110d have been defined and stored, then the image files 110a-110d may be modified by one or more operations 112, such as one or more filters, or removing dust specks or red-eye reduction. In the current approaches, the operations 112 need to work with a defined set of pixel data, which is not defined until the RAW data has been interpreted by an interpretation technique 106, 114.
In the example illustrated by FIG. 1, a user wishes to use a new RAW interpretation technique 114 to interpret the RAW image files 104a-104d. In order to do this, the first technique 106 must be made unavailable under current approaches, for example by being uninstalled. After installing or otherwise making available the new RAW interpretation technique 114, the RAW image files 104a-104d must be re-interpreted by the new technique 114 prior to being viewed and modified. After the RAW image files 104a-104d are re-interpreted by the new technique 114, they are transmitted to storage 116, for example a hard drive, and stored as image files 118a-118d, such as a TIFF file or a JPEG file, in which the color values for every pixel have been defined. Because the new RAW interpretation technique 114 operates in a different manner than the previous technique 106, the image files 118a-118d may look different. These image files 118a-118d may then be modified by one or more operations 112, such as one or more filters, or removing dust specks or red-eye reduction.
A drawback to the current approach illustrated in FIG. 1 is that various iterations of techniques for interpreting sensor data are not able to be applied on an image-by-image basis, because of the all-or-nothing approach described above. Currently, sensor data is interpreted by a particular technique and then the defined pixels are stored into another format such as JPEG, TIFF, or PSD. These files can take up large amounts of storage space. If a user installs a new technique for interpreting sensor data, and desires to interpret the sensor data that was previously interpreted using a prior technique, then the sensor data is interpreted using the new technique and again modified by being stored into another format such as JPEG, TIFF, or PSD. This results in multiple interpretations/decodes of the same image, taking up even greater amounts of storage space.
Therefore, an approach that allows for selecting a particular technique for interpreting sensor data is desirable. The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.